#pragma once
#include<iostream>
#include<iostream>
#include<string>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<memory.h>
#include<functional>
enum ExitCode
{
    OK=0,
    EXIT_EER,
    SOCK_ERR,
    BIND_ERR,
    LISTEN_ERR,
    USAGE_ERR,
    CONNECT_ERR,
    OPEN_ERR
};

class NoCopy
{
public:
    NoCopy(){};
    ~NoCopy(){};
    NoCopy(const NoCopy&) = delete;
    const NoCopy& operator=(const NoCopy&) = delete; 
};

#define CONV(addr) ((struct sockaddr*)&addr)